package com.denlaku.longan.controller;

import com.denlaku.longan.http.Return;
import com.denlaku.longan.qo.DataOriginQuery;
import com.denlaku.longan.vo.DataOrigin;
import com.denlaku.longan.vo.PageBy;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author tianx
 */
@RequestMapping("/api/data-source")
public interface DataOriginController {
	/**
	 * 新增数据源
	 *
	 * @param dataOrigin 数据源
	 * @return 响应对象
	 */
	@PostMapping("/add")
	Return<Long> add(@RequestBody DataOrigin dataOrigin);

	/**
	 * 更新数据源
	 *
	 * @param dataOrigin 数据源
	 * @return 响应对象
	 */
	@PostMapping("/update")
	Return<Void> update(@RequestBody DataOrigin dataOrigin) ;

	/**
	 * 删除数据源
	 *
	 * @param id 数据源ID
	 * @return 响应对象
	 */
	@PostMapping("/delete")
	Return<Void> delete(Long id);

	/**
	 * 测试数据源
	 *
	 * @param dataOrigin 数据源
	 * @param flag 标记
	 * @return 响应对象
	 */
	@PostMapping("/test")
	Return<Boolean> test(@RequestBody DataOrigin dataOrigin, String flag);

	/**
	 * 分页查询数据源
	 *
	 * @param query 查询参数
	 * @param pageBy 分页参数
	 * @return 响应对象
	 */
	@GetMapping("/page-list")
	Return<List<DataOrigin>> pageList(DataOriginQuery query, PageBy pageBy);

	/**
	 * 查询数据源列表
	 *
	 * @param query 查询参数
	 * @return 响应对象
	 */
	@GetMapping("/list")
	Return<List<DataOrigin>> list(DataOriginQuery query);

	/**
	 * 根据ID获取数据源
	 *
	 * @param id 数据源ID
	 * @return 响应对象
	 */
	@GetMapping("/get")
	Return<DataOrigin> get(@RequestParam("id") Long id);

}
